package co.gov.medellin.ssti.sub.paoyer.administration;

import java.util.Vector;
import javax.ejb.EJBObject;

import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.ApplicationUserVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.ApplicationVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.AuthorizedByBranchVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.ContractVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.CostCenterByAuthorizedVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.FDClassVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.FDTypeVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.FDVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.FlexValueVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.OptionVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.ProgramParameterVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.ProgramVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.UserGroupOptionVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.UserGroupVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.UserVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.WarehouseByBranchVO;
import co.gov.medellin.ssti.sub.paoyer.common.exception.SystemException;
import co.gov.medellin.ssti.sub.paoyer.common.exception.UserException;

import java.rmi.RemoteException;
import java.util.Collection;

public interface AdministrationFacade extends EJBObject {
	public String getMenu(String strUserGroup, String strPath)
			throws RemoteException, UserException, SystemException;

	public Vector getResources(UserVO user) throws RemoteException,
			UserException, SystemException;

	public UserVO userGroup(UserVO user) throws RemoteException, UserException,
			SystemException;

	public UserVO authenticateUser(UserVO user) throws RemoteException,
			UserException, SystemException;

	public Collection findUserByCriterea(UserVO criterea)
			throws RemoteException, UserException, SystemException;

	public boolean createUser(UserVO user) throws RemoteException,
			UserException, SystemException;

	public boolean updateUser(UserVO user) throws RemoteException,
			UserException, SystemException;

	public boolean deleteUser(UserVO user) throws RemoteException,
			UserException, SystemException;

	public ApplicationVO createApplication(ApplicationVO application)
			throws RemoteException, UserException, SystemException;

	public Collection findApplicationByCriterea(ApplicationVO criterea)
			throws RemoteException, UserException, SystemException;

	public int updateApplication(ApplicationVO criterea)
			throws RemoteException, UserException, SystemException;

	public int deleteApplication(ApplicationVO criterea)
			throws RemoteException, UserException, SystemException;

	public UserGroupVO createUserGroup(UserGroupVO userGroup)
			throws RemoteException, UserException, SystemException;

	public Collection findUserGroupByCriterea(UserGroupVO userGroup)
			throws RemoteException, UserException, SystemException;

	public UserGroupVO updateUserGroup(UserGroupVO userGroup)
			throws RemoteException, UserException, SystemException;

	public void deleteUserGroup(UserGroupVO userGroup) throws RemoteException,
			UserException, SystemException;

	public OptionVO createOption(OptionVO option) throws RemoteException,
			UserException, SystemException;

	public Collection findOptionByCriterea(OptionVO option)
			throws RemoteException, UserException, SystemException;

	public OptionVO updateOption(OptionVO option) throws RemoteException,
			UserException, SystemException;

	public void deleteOption(OptionVO option) throws RemoteException,
			UserException, SystemException;

	public ProgramVO createProgram(ProgramVO program) throws RemoteException,
			UserException, SystemException;

	public Collection findProgramByCriterea(ProgramVO program)
			throws RemoteException, UserException, SystemException;

	public ProgramVO updateProgram(ProgramVO program) throws RemoteException,
			UserException, SystemException;

	public void deleteProgram(ProgramVO program) throws RemoteException,
			UserException, SystemException;

	public ProgramParameterVO createProgramParameter(
			ProgramParameterVO programParameter) throws RemoteException,
			UserException, SystemException;

	public Collection findProgramParameterByCriterea(
			ProgramParameterVO programParameter) throws RemoteException,
			UserException, SystemException;

	public ProgramParameterVO updateProgramParameter(
			ProgramParameterVO programParameter) throws RemoteException,
			UserException, SystemException;

	public void deleteProgramParameter(ProgramParameterVO programParameter)
			throws RemoteException, UserException, SystemException;

	public UserGroupOptionVO createUserGroupOption(
			UserGroupOptionVO userGroupOption) throws RemoteException,
			UserException, SystemException;

	public Collection findUserGroupOptionByCriterea(
			UserGroupOptionVO userGroupOption) throws RemoteException,
			UserException, SystemException;

	public UserGroupOptionVO updateUserGroupOption(
			UserGroupOptionVO userGroupOption) throws RemoteException,
			UserException, SystemException;

	public void deleteUserGroupOption(UserGroupOptionVO userGroupOption)
			throws RemoteException, UserException, SystemException;

	public Collection findNotAsociatedOptionByCriterea(
			UserGroupOptionVO userGroupOption) throws RemoteException,
			UserException, SystemException;

	public boolean asociateOptionToUserGroup(UserGroupOptionVO userGroupOption)
			throws RemoteException, UserException, SystemException;

	public ApplicationUserVO createApplicationUser(
			ApplicationUserVO applicationUser) throws RemoteException,
			UserException, SystemException;

	public Collection findApplicationUserByCriterea(
			ApplicationUserVO applicationUser) throws RemoteException,
			UserException, SystemException;

	public Collection findUserNotAsociatedByCriterea(ApplicationUserVO criterea)
			throws RemoteException, UserException, SystemException;

	public ApplicationUserVO updateApplicationUser(
			ApplicationUserVO applicationUser) throws RemoteException,
			UserException, SystemException;

	public void deleteApplicationUser(ApplicationUserVO applicationUser)
			throws RemoteException, UserException, SystemException;

	public FlexValueVO createFlexValue(FlexValueVO flexValue)
			throws RemoteException, UserException, SystemException;

	public Collection findFlexValueByCriterea(FlexValueVO flexValue)
			throws RemoteException, UserException, SystemException;

	public boolean updateFlexValue(FlexValueVO flexValue)
			throws RemoteException, UserException, SystemException;

	public boolean deleteFlexValue(FlexValueVO flexValue)
			throws RemoteException, UserException, SystemException;

	public Collection findFlexValueTypeByCriterea(FlexValueVO criterea)
			throws RemoteException, UserException, SystemException;

	public FlexValueVO createFlexValueType(FlexValueVO flexValueType)
			throws RemoteException, UserException, SystemException;

	public boolean updateFlexValueType(FlexValueVO flexValueType)
			throws RemoteException, UserException, SystemException;

	public boolean deleteFlexValueType(FlexValueVO flexValueType)
			throws RemoteException, UserException, SystemException;

	// Consultas
	public Collection findInventoryByCriterea(FDVO criterea)
			throws RemoteException, UserException, SystemException;

	public Collection findContractByCriterea(ContractVO criterea)
			throws RemoteException, UserException, SystemException;

	public Collection findAuthorizedBranchByCriterea(
			AuthorizedByBranchVO authorizedByBranch)

	throws RemoteException, UserException, SystemException;

	public Collection findWarehouseBranchByCriterea(
			WarehouseByBranchVO warehouseByBranch) throws RemoteException,
			UserException, SystemException;

	public Collection findCostCenterAuthorizedByCriterea(
			CostCenterByAuthorizedVO costCenterByAuthorized)
			throws RemoteException, UserException, SystemException;

	public Collection findFDClassByCriterea(FDClassVO fdClass)
			throws RemoteException, UserException, SystemException;

	public Collection findFDTypeByCriterea(FDTypeVO fdType)
			throws RemoteException, UserException, SystemException;

	public Collection findFDHistoryByCriterea(FDVO fdVO)
			throws RemoteException, UserException, SystemException;

}
